package spring.helloworld.zuul.service;

import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;

@Component
public class DemoFilter extends ZuulFilter {
	 private static Logger log = LoggerFactory.getLogger(DemoFilter.class);
	@Override
	public Object run() {
		// 过滤器的具体逻辑，这里只是将请求的URL简单些到日志中
		 RequestContext ctx = RequestContext.getCurrentContext();
		         HttpServletRequest request = ctx.getRequest();
		       String s = String.format("%s >>> %s", request.getMethod(), request.getRequestURL().toString());
		        log.info(s);
		return null;
	}

	@Override
	public boolean shouldFilter() {
		// 这里可以写逻辑判断，是否要过滤，本文true,永远过滤。 
		return true;
	}

	@Override
	public int filterOrder() {
//		pre：路由之前
//		routing：路由之时
//		post： 路由之后
//		error：发送错误调用
		return 0;
	}

	@Override
	public String filterType() {
//		pre：路由之前
//		routing：路由之时
//		post： 路由之后
//		error：发送错误调用
		return "pre";
	}

}
